网络验证机制存在哪些缺陷
网络验证机制存在以下缺陷:
弱口令:以前有相当一部分的web程序还没有对账号的密码的强度做安全控制,有相当一部分的用户喜欢设置类似于123456或者password这种口令,或者以自己的名字,自己的生日作为自己的密码。这就导致攻击者可以轻易通过猜测或者对被攻击者的社交网站进行分析得到的信息来生成一个用户的密码字典,从而攻破账户。而如今绝大部分的网站都对密码的强度做了要求,要求密码长度在8位以上,并需要同时含有大小写字母以及数字。这使纯暴力破解门户网站的难度大大增加,同时网站也采用了锁定机制,即短时间内访问速度过快或者访问次数达到某一限制就会封锁账号。
允许爆破攻击:这类设计在一些很偏僻的后台系统上还有经常会出现,若是面向客户的门户系统,几乎不可能出现。若是应用程序在锁定账户后,任然会对登录尝试做出响应,这意味着即使目标账户被锁定,攻击者依旧可以完成对密码的猜测。若是登录失败计数器保留在本地我们可以通过修改cookie的值或者获得一个全新的会话,来继续实行密码猜测攻击。
详细的失败消息:有时候服务端返回的失败的消息中会告诉你信息出错的位置,这种情况下,我们可以发动自动化攻击来遍历大量的常见的用户名,我们可以将枚举出来的用户名作为随后各种攻击的基础。这种漏洞可能以更加隐蔽的方式出现,两个返回包渲染的结果可能看起来完全相同,但是它们两个包之间可能存在一些细微的差异。即使应用程序对包含有效与无效用户名登录尝试的响应完全相同,我么依然可以通过根据应用程序响应的时间来枚举出用户名。
易受攻击的账号密码的传输:现如今的绝大部分的鉴权口令采用的都是HTTPS加密后的post传输手段,可任然有一定数量的网站采用的是明文传输的方式。攻击者可以轻易的通过监听一些节点(如本地的wifi,用户的ISP内)即可得到用户的账号信息。
密码修改功能:一般提供这种功能会出现允许攻击者猜测现有密码字段,因为修改密码很多情况下是不允许新密码与旧密码重复,这就会导致攻击者可以尝试猜测现有密码的字段,尝试对密码进行修改,有的服务也会产生在修改过程出现问题时提供非常详细的报错详细,这样也会导致攻击者猜测用户的用户名信息。
用户伪装功能:一些应用程序允许管理用户伪装成其他用户,以该用户的权限来访问数据和执行操作。这个功能对于我这样一个小白而言其实并不常见,稍微能够理解一点的就是管理用户可以从高权限组进入到低权限组,就如linux中的root可以进入到其他用户,而其他用户若是要进入到root则需要输入相应的密码。
可以借助以下强身份验证来解决以上缺陷:
安全问题:添加一些安全问题作为额外的身份验证,是比较简单的一种方法。过去,安全问题主要用于密码重置,它们设置起来很简单,但也很容易被黑客入侵或被盗。
动态一次性密码 ( OTP ): 通过动态 OTP 口令验证比安全问题更安全,因为它使用二级身份验证类别,是在密码之外增加一个他们常用的设备来验证。比较常见的包括:短信/邮箱验证码,或者是兼容第三方身份验证器如 Google Authenticator、Microsoft Authenticator 等,操作简单,方便快捷。
专门的身份验证应用程序:用户通过与智能手机上的应用程序交互来验证自己的身份,例如 Authing 的小程序认证,通过将 Authing 移动令牌验证器集成至微信小程序,不仅快捷友好,同时增强安全性。
物理身份验证密钥:身份验证过程由非对称加密算法保护,私钥永远不会离开设备,例如银行的 U 盾。
生物识别技术:目前在安全领域被广泛应用,比较难被破解,但生物识别技术也带来了挑战和隐私问题。与密码不同,您无法更改您的指纹、虹膜或视网膜。此外,实施此技术,有可能需要增加对专门生物识别设备的投入。
基于挑战-响应的安全协议:一个数据库向另一个数据库发送一个挑战,接收者必须用适当的答案进行响应。所有通信在传输过程中都经过加密,因此黑客无法入侵或操纵。听起来很复杂,实际上发送者和接收者在几秒内即可完成通信。